namespace Microsoft.Xna.Framework.Input
{
    /// <summary>
    /// struct used to hold and pass input messages
    /// </summary>
    public struct InputMessage
    {
        /// <summary>
        /// A gamepad Button press
        /// </summary>
        public Buttons? _button;

        /// <summary>
        /// <para>A value used to denote floating point values</para>
        /// <para>Examples are gamepad triggers and mouse scroll wheel</para>
        /// </summary>
        public double? _doubleVal;

        /// <summary>
        /// A keyboard key press
        /// </summary>
        public Keys? _key;

        /// <summary>
        /// A mouse Button press
        /// </summary>
        public MouseClick? _mouse;

        /// <summary>
        /// <para>A value used to denote x an y values values</para>
        /// <para>Examples are mouse position and gamepad thumbsticks</para>
        /// </summary>
        public Vector2? _vectorVal;

        public InputMessage(
            Keys? key, Buttons? button, MouseClick? mouse, double? doubleVal,
            Vector2? vectorVal)
        {
            _key = key;
            _button = button;
            _mouse = mouse;
            _doubleVal = doubleVal;
            _vectorVal = vectorVal;
        }
    }
}